home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / U-User Group / (k)u3.d64 / prowriterdump.l < prev    next >
Text File  |  2007-02-28  |  6KB  |  180 lines

  1. 9000 DIM HSBIT(256)
  2. 9002 MIRRORBIT(HSBIT)
  3. 9004 READ'HIDDEN'RAM'SETUP
  4. 9006 BIT'MAP'PRINT(HSBIT)
  5. 9008 END 
  6. 9010 //     THIS PROGRAM IS A MODIFIED VERSION OF A SCREEN DUMP PROGRAM BY:
  7. 9012 //              ╘.┬.╚.╦UIPER 1984
  8. 9014 //      IT WAS MODIFIED BY ╚ARRY ╙EIDMAN.
  9. 9016 // THIS PROGRAM DUMPS THE HIGH RESOLUTION BIT MAP TO THE LINE PRINTER;
  10. 9018 //   THIS VERSION IS CONFIGURED BY A PROWRITER PRINTER WITH ANY INTERFACE
  11. 9020 // SET TO TRANSPARENT MODE.  (I.E. THE ASCII BITS ARE TRANSFER UNMODIFIED)
  12. 9022 //  THIS VERSION SHOULD ALSO WORK ON THE NEC 8023A PRINTER.
  13. 9024 //
  14. 9026 // EXAMPLE OF USE:
  15. 9028 //      THIS PROGRAM WILL DUMP A
  16. 9030 //      PICTURE CURRENTLY IN
  17. 9032 //      ╚I ╥ES.  ┘OU CAN ADD YOUR
  18. 9034 //      OWN CODE BEFOR LINE 9000
  19. 9036 //      TO DRAW A PICTURE TO
  20. 9038 //      ╚I ╥ES.
  21. 9040 //
  22. 9042 PROC BIT'MAP'PRINT(REF HSBIT()) CLOSED
  23. 9044 PRINT CHR$(147)
  24. 9046 DIM YN$ OF 1
  25. 9048 INPUT "DO YOU WANT TO REVERSE THE IMAGE ? ": YN$
  26. 9050 CASE YN$ OF
  27. 9052 WHEN "Y","┘"
  28. 9054 HSMASK:=0
  29. 9056 OTHERWISE 
  30. 9058 HSMASK:=255
  31. 9060 ENDCASE 
  32. 9062 BIT'MAP:=57344
  33. 9064 NUM'DOTS:=500 //NUMBER OF DOTS PER LINE FROM LEFT MARGIN
  34. 9066 NUM'DOTS'HI:=INT(NUM'DOTS/256)
  35. 9068 NUM'DOTS'LO:=NUM'DOTS-256*NUM'DOTS'HI
  36. 9070 DIM OUT$ OF NUM'DOTS+6
  37. 9072 SELECT OUTPUT "LP:"
  38. 9074 PRINT CHR$(27)+"┼", // FORMFEED; PITCH 12 CPI
  39. 9076 SKIP'LINES(20) //               CENTER PLOT ON PAGE
  40. 9078 PRINT CHR$(27)+"T16"+CHR$(27)+">" // LINE FEED TO 16/144 INCH
  41. 9080 FOR COLUMN:=0 TO 39 DO
  42. 9082 OUT$:=CHR$(27)+"S0500" // CLEAR PREVIOUS LINE FROM OUTPUT STRING
  43. 9084 FOR I:=1 TO NUM'DOTS-402 DO // PUT IN LEADING BLANKS...
  44. 9086 OUT$:=OUT$+CHR$(0) //          ...TO MOVE THE BIT-MAP...
  45. 9088 ENDFOR I //                    ...IMAGE OFF THE PAPER MARGIN
  46. 9090 OUT$:=OUT$+CHR$(0)+CHR$(0)
  47. 9092 FOR ROW:=24 TO 0 STEP -1 DO // PUT ALL THE 'CHARACTERS' FROM THE ...
  48. 9094 CHAR'ADDR:=BIT'MAP+8*(COLUMN+40*ROW) // ...CURRENT COLUMN INTO THE ...
  49. 9096 GET'BYTES(CHAR'ADDR,OUT$,HSBIT,HSMASK) // ... OUTPUT STRING
  50. 9098 ENDFOR ROW
  51. 9100 PRINT OUT$ // PRINT THE COLUMN
  52. 9102 ENDFOR COLUMN
  53. 9104 OUT$:=""
  54. 9106 PRINT OUT$
  55. 9108 SKIP'LINES(20) //                    MOVE TO NEXT PAGE
  56. 9110 SELECT OUTPUT "DS:"
  57. 9112 ENDPROC BIT'MAP'PRINT
  58. 9114 //
  59. 9116 PROC SKIP'LINES(N) CLOSED
  60. 9118 FOR I:=1 TO N DO
  61. 9120 PRINT CHR$(10),
  62. 9122 ENDFOR I
  63. 9124 ENDPROC SKIP'LINES
  64. 9126 //
  65. 9128 PROC READ'HIDDEN'RAM'SETUP 
  66. 9130 //       TO READ HIDDEN RAM:
  67. 9132 //       SET UP MACHINE CODE BY CALLING THIS PROCEDURE,
  68. 9134 //       POKE ADDRESS TO READ INTO 842 (LOW BYTE) AND 843 (HIGH BYTE),
  69. 9136 //       SYS 829, AND
  70. 9138 //       PEEK CONTENTS FROM 855.
  71. 9140 //
  72. 9142 //   828        TEMPORARY STORAGE FOR MEMORY CONTROL REGISTER
  73. 9144 POKE 829,173 // LDA...             (SAVE...
  74. 9146 POKE 830,1 //      ...1 +          (...THE...
  75. 9148 POKE 831,0 //      ...0*256 (=1)   (...MEMORY...
  76. 9150 POKE 832,141 // STA...             (...CONTROL...
  77. 9152 POKE 833,60 //     ...60 +         (...SETTING
  78. 9154 POKE 834,3 //      ...3*256 (=828)
  79. 9156 POKE 835,120 // SEI                (DISABLE INTERRUPTS
  80. 9158 POKE 836,73 //  EOR...             (REVERSE...
  81. 9160 POKE 837,7 //      ...$7           (...THE...
  82. 9162 POKE 838,141 // STA...             (...MEMORY...
  83. 9164 POKE 839,1 //      ...             (...CONTROL...
  84. 9166 POKE 840,0 //      ...(=1)         (...SETTING
  85. 9168 POKE 841,173 // LDA...
  86. 9170 //   842           ...LOW BYTE OF ADDRESS TO READ
  87. 9172 //   843           ...HIGH BYTE OF ADDRESS TO READ
  88. 9174 POKE 844,141 // STA...             (FETCH...
  89. 9176 POKE 845,87 //     ...87 +         (...DESIGNATED...
  90. 9178 POKE 846,3 //      ...3*256 (=855) (..BYTE
  91. 9180 POKE 847,173 // LDA...             (RESTORE...
  92. 9182 POKE 848,60 //     ...             (...THE...
  93. 9184 POKE 849,3 //      ...(=828)       (...MEMORY...
  94. 9186 POKE 850,141 // STA...             (...CONTROL...
  95. 9188 POKE 851,1 //      ...             (...SETTING
  96. 9190 POKE 852,0 //      ...(=1)
  97. 9192 POKE 853,88 //  CLI                (ENABLE INTERRUPTS
  98. 9194 POKE 854,96 //  RTS
  99. 9196 //   855        CONTAINS RETRIEVED BYTE
  100. 9198 ENDPROC READ'HIDDEN'RAM'SETUP
  101. 9200 //
  102. 9202 PROC GET'BYTES(CHAR'ADDR,REF OUT$,REF HSBIT(),HSMASK) CLOSED
  103. 9204 // GET THE EIGHT BYTES OF A 'CHARACTER' FROM CHARACTER ROM OR BIT MAP ...
  104. 9206 // ... AND APPEND TO 'OUT$'.
  105. 9208 FOR BYTE:=7 TO 0 STEP -1 DO
  106. 9210 BYTE'ADDR:=BYTE+CHAR'ADDR
  107. 9212 HIGH'BYTE#:=INT(BYTE'ADDR/256)
  108. 9214 LOW'BYTE#:=BYTE'ADDR-256*HIGH'BYTE#
  109. 9216 POKE 842,LOW'BYTE#
  110. 9218 POKE 843,HIGH'BYTE#
  111. 9220 SYS 829
  112. 9222 BITVAL:=XOR(PEEK(855),HSMASK)+1
  113. 9224 BITVAL:=HSBIT(BITVAL)
  114. 9226 OUT$:=OUT$+CHR$(BITVAL)+CHR$(BITVAL)
  115. 9228 ENDFOR BYTE
  116. 9230 ENDPROC GET'BYTES
  117. 9232 //
  118. 9234 FUNC SCREEN'CODE(ASCII$) CLOSED //RETURN SCREEN CODE VALUE OF CHARACTER
  119. 9236 AS:=ORD(ASCII$)
  120. 9238 RETURN LAND(AS,128)/2+LAND(AS,63)
  121. 9240 ENDFUNC SCREEN'CODE
  122. 9242 //
  123. 9244 FUNC LOGICAL'SET'UP(NUM,MASK,OP) CLOSED
  124. 9246 //
  125. 9248 // SET UP MACHINE CODE TO RESIDE
  126. 9250 // BETWEEN THE SCREEN AND THE
  127. 9252 // SPRITE POINTERS.
  128. 9254 //
  129. 9256 POKE 2024,169
  130. 9258 POKE 2025,NUM
  131. 9260 POKE 2026,OP
  132. 9262 POKE 2027,MASK
  133. 9264 POKE 2028,141
  134. 9266 POKE 2029,240
  135. 9268 POKE 2030,7
  136. 9270 POKE 2031,96
  137. 9272 SYS 2024
  138. 9274 RETURN PEEK(2032)
  139. 9276 ENDFUNC LOGICAL'SET'UP
  140. 9278 //
  141. 9280 FUNC LAND(NUM,MASK) CLOSED
  142. 9282 RETURN LOGICAL'SET'UP(NUM,MASK,41)
  143. 9284 ENDFUNC LAND
  144. 9286 //
  145. 9288 FUNC LOR(NUM,MASK) CLOSED
  146. 9290 RETURN LOGICAL'SET'UP(NUM,MASK,9)
  147. 9292 ENDFUNC LOR
  148. 9294 //
  149. 9296 FUNC XOR(NUM,MASK) CLOSED
  150. 9298 RETURN LOGICAL'SET'UP(NUM,MASK,73)
  151. 9300 ENDFUNC XOR
  152. 9302 END 
  153. 9304 PROC MIRRORBIT(REF VAL()) CLOSED
  154. 9306 //  THE PROWRITER NEED THE MIRROR IMAGE OF THE BIT PATTERN TO WORK PROPERLY
  155. 9308 // (I.E. 11000000 BECOMES 00000011)
  156. 9310 // THIS ROUTINE SETS UP AN ARRAY THAT ALLOWS THIS TO HAPPEN
  157. 9312 ZONE 10
  158. 9314 I:=0
  159. 9316 FOR I1:=0 TO 1 DO
  160. 9318 FOR I2:=0 TO 1 DO
  161. 9320 FOR I3:=0 TO 1 DO
  162. 9322 FOR I4:=0 TO 1 DO
  163. 9324 FOR I5:=0 TO 1 DO
  164. 9326 FOR I6:=0 TO 1 DO
  165. 9328 FOR I7:=0 TO 1 DO
  166. 9330 FOR I8:=0 TO 1 DO
  167. 9332 IHS:=I8*128+I7*64+I6*32+I5*16+I4*8+I3*4+I2*2+I1
  168. 9334 I:=I+1
  169. 9336 VAL(I):=IHS
  170. 9338 //PRINT I,IHS
  171. 9340 ENDFOR I8
  172. 9342 ENDFOR I7
  173. 9344 ENDFOR I6
  174. 9346 ENDFOR I5
  175. 9348 ENDFOR I4
  176. 9350 ENDFOR I3
  177. 9352 ENDFOR I2
  178. 9354 ENDFOR I1
  179. 9356 ENDPROC MIRRORBIT
  180.